package pe.edu.upc.dew.puntos.dao;

import pe.edu.upc.dew.puntos.Model.*;
import java.util.ArrayList; 

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.043E7936-53FA-5C50-A845-143E26091A4E]
// </editor-fold> 
public class CtrlRegistroUsuario {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.20352C2C-A41E-F170-7CBD-7DD5B895F455]
    // </editor-fold> 
    private ArrayList<Usuario> usuarios;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.8EB5114F-F8AD-5B5B-5D4F-52916ACD1714]
    // </editor-fold> 
    public CtrlRegistroUsuario () {
        this.usuarios = new ArrayList<Usuario>();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.FE05119F-78AA-354C-2529-E7F10D3CCF93]
    // </editor-fold> 
    public ArrayList<Usuario> getUsuarios () {
        return usuarios;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.D9AFDE73-214E-D376-BF0E-8C95D5BDFF22]
    // </editor-fold> 
    public void setUsuarios (ArrayList<Usuario> val) {
        this.usuarios = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.B024DA89-5EFA-4F89-4B83-6E47FB098F39]
    // </editor-fold> 
    public void registrarCliente (String dni, String nombre, String direccion, String logUsuario, String logClave, Integer puntos) {
        Cliente cliente = new Cliente(dni,nombre,direccion,"CLIENTE",logUsuario,logClave,puntos);
        this.usuarios.add(cliente);
    }
    
    public Cliente registrarClienteNuevo (String dni, String nombre, String direccion, String logUsuario, String logClave, Integer puntos) {
        Cliente cliente = new Cliente(dni,nombre,direccion,"CLIENTE",logUsuario,logClave,puntos);
        this.usuarios.add(cliente);
        
        return (Cliente)this.buscarUsuario(dni);
    }    

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.84CE6C4A-BD97-DFB4-70DD-72B3D1A4E8EA]
    // </editor-fold> 
    public void registarVendedor (String dni, String nombre, String direccion, String logUsuario, String logClave, Establecimiento establecimiento) {
        Vendedor vendedor = new Vendedor(dni,nombre,direccion,"VENDEDOR",logUsuario,logClave,establecimiento);
        this.usuarios.add(vendedor);        
    }
    
    public Vendedor registarVendedorNuevo (String dni, String nombre, String direccion, String logUsuario, String logClave, Establecimiento establecimiento) {
        Vendedor vendedor = new Vendedor(dni,nombre,direccion,"VENDEDOR",logUsuario,logClave,establecimiento);
        this.usuarios.add(vendedor);        
        
        return (Vendedor)this.buscarUsuario(dni);
    }    
    

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.597A4950-9C73-2D44-0D3D-1D9D79699853]
    // </editor-fold> 
    public void registarAdministrador (String dni, String nombre, String direccion, String logUsuario, String logClave) {
        Administrador administrador = new Administrador(dni,nombre,direccion,"ADMINISTRADOR",logUsuario,logClave);
        this.usuarios.add(administrador);           
    }
    
    public Administrador registarAdministradorNuevo (String dni, String nombre, String direccion, String logUsuario, String logClave) {
        Administrador administrador = new Administrador(dni,nombre,direccion,"ADMINISTRADOR",logUsuario,logClave);
        this.usuarios.add(administrador);           
        
        return (Administrador)this.buscarUsuario(dni);
    }    

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.9AD574A0-5E62-BD26-D1EE-269CFD438425]
    // </editor-fold> 
    public Usuario buscarUsuario (String dni) {
        Usuario usuarioEncontrado=null;
        for(Usuario usuario : this.usuarios){
            if(usuario.getDni().equals(dni))
            {  usuarioEncontrado = usuario;
                break;
            }
        }    
        return usuarioEncontrado;  
    }

    public Usuario validarUsuario (String username,String password) {
        Usuario usuarioEncontrado=null;
        for(Usuario usuario : this.usuarios){
            if(usuario.getLogUsuario().equals(username) && usuario.getLogClave().equals(password))
            {  usuarioEncontrado = usuario;
                break;
            }
        }
        return usuarioEncontrado;
    }


  public Cliente buscarCliente (String username) {
        Cliente clienteEncontrado=null;
        for(Usuario usuario : this.usuarios){
            if(usuario.getLogUsuario().equals(username))
            {  clienteEncontrado = (Cliente)usuario;
                break;
            }
        }
        return clienteEncontrado;
    }


    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.2621FA84-77C5-461A-6082-807B9C3E148D]
    // </editor-fold> 
    public void eliminarUsuario (String dni) {
        Usuario usuario = this.buscarUsuario(dni);
        this.usuarios.remove(usuario);
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.3B16FAB0-0F67-42F8-8A3C-A82B00B53CE2]
    // </editor-fold> 
    public void aumentarPuntos (String dni, Integer aumento) {
        Usuario usuario = this.buscarUsuario(dni);
        if (usuario.getTipo().equals("CLIENTE"))
        {
            Cliente cliente = (Cliente)usuario;
            cliente.setPuntos(cliente.getPuntos() + aumento);
        }
    }

}

